/**
 * 还原单位属性到未加指定法术状态的数值
 * @param {*} fight_unit 
 * @param {*} status_name 
 */
export function clear_status_data(fight_unit, status_name) {
	let max_hp = fight_unit["法术状态"][status_name]["最大气血"] || 0;
	let damage = fight_unit["法术状态"][status_name]["伤害"] || 0;
	let defense = fight_unit["法术状态"][status_name]["防御"] || 0;
	let speed = fight_unit["法术状态"][status_name]["速度"] || 0;
	let magic_defense = fight_unit["法术状态"][status_name]["法防"] || 0;
	let magic_damage = fight_unit["法术状态"][status_name]["法伤"] || 0;
	let dodge = fight_unit["法术状态"][status_name]["躲避"] || 0;
	let hit = fight_unit["法术状态"][status_name]["命中"] || 0;
	let physical_damage_result = fight_unit["法术状态"][status_name]["物理伤害结果"] || 0;
	let magic_damage_result = fight_unit["法术状态"][status_name]["法术伤害结果"] || 0;
	let dk_fy_level = fight_unit["法术状态"][status_name]["抵抗封印等级"] || 0;
	let fy_mz_level = fight_unit["法术状态"][status_name]["封印命中等级"] || 0;

	if (fight_unit["法术状态"][status_name]["类型"] === "增益") {
		//取消增益状态
		fight_unit["最大气血"] -= max_hp;
		fight_unit["伤害"] -= damage;
		fight_unit["防御"] -= defense;
		fight_unit["速度"] -= speed;
		fight_unit["法防"] -= magic_defense;
		fight_unit["法伤"] -= magic_damage;
		fight_unit["躲避"] -= dodge;
		fight_unit["命中"] -= hit;
		fight_unit["物理伤害结果"] -= physical_damage_result;
		fight_unit["法术伤害结果"] -= magic_damage_result;
		fight_unit["抵抗封印等级"] -= dk_fy_level;
		fight_unit["封印命中等级"] -= fy_mz_level;
	} else if (fight_unit["法术状态"][status_name]["类型"] === "减益") {
		// 取消减益状态
		fight_unit["最大气血"] += max_hp;
		fight_unit["伤害"] += damage;
		fight_unit["防御"] += defense;
		fight_unit["速度"] += speed;
		fight_unit["法防"] += magic_defense;
		fight_unit["法伤"] += magic_damage;
		fight_unit["躲避"] += dodge;
		fight_unit["命中"] += hit;
		fight_unit["物理伤害结果"] += physical_damage_result;
		fight_unit["法术伤害结果"] += magic_damage_result;
		fight_unit["抵抗封印等级"] += dk_fy_level;
		fight_unit["封印命中等级"] += fy_mz_level;
		if (fight_unit["法术状态"][status_name]["攻击五行"]) {
			fight_unit["攻击五行"] = fight_unit["法术状态"][status_name]["原攻击五行"];
		}
		if (fight_unit["法术状态"][status_name]["防御五行"]) {
			fight_unit["防御五行"] = fight_unit["法术状态"][status_name]["原防御五行"];
		}
	}
}

/**
 * 根据状态类型计算单位受影响后的属性
 * @param {*} fight_unit 
 * @param {*} status_name 
 */
export function computing_status_data(fight_unit, status_name) {
	console.debug(`根据状态类型计算单位受影响后的属性 ===> ${status_name}  ${fight_unit["编号"]}`)
	let skill_data = G.SkillData.default[status_name];
	if (skill_data && skill_data["技能类型"] === "减益") {
		// 减益状态
		fight_unit["最大气血"] -= fight_unit["法术状态"][status_name]["最大气血"];
		fight_unit["伤害"] -= fight_unit["法术状态"][status_name]["伤害"];
		fight_unit["防御"] -= fight_unit["法术状态"][status_name]["防御"];
		fight_unit["速度"] -= fight_unit["法术状态"][status_name]["速度"];
		fight_unit["法防"] -= fight_unit["法术状态"][status_name]["法防"];
		fight_unit["法伤"] -= fight_unit["法术状态"][status_name]["法伤"];
		fight_unit["躲避"] -= fight_unit["法术状态"][status_name]["躲避"];
		fight_unit["命中"] -= fight_unit["法术状态"][status_name]["命中"];
		fight_unit["物理伤害结果"] -= fight_unit["法术状态"][status_name]["物理伤害结果"];
		fight_unit["法术伤害结果"] -= fight_unit["法术状态"][status_name]["法术伤害结果"];
		fight_unit["抵抗封印等级"] -= fight_unit["法术状态"][status_name]["抵抗封印等级"];
		fight_unit["封印命中等级"] -= fight_unit["法术状态"][status_name]["封印命中等级"];
		if (fight_unit["法术状态"][status_name]["攻击五行"]) {
			fight_unit["法术状态"][status_name]["原攻击五行"] = fight_unit["攻击五行"];
			fight_unit["攻击五行"] = fight_unit["法术状态"][status_name]["攻击五行"];
		}
		if (fight_unit["法术状态"][status_name]["防御五行"]) {
			fight_unit["法术状态"][status_name]["原防御五行"] = fight_unit["防御五行"];
			fight_unit["防御五行"] = fight_unit["法术状态"][status_name]["防御五行"];
		}
	}
	if (skill_data && skill_data["技能类型"] === "增益") {
		// 增益状态
		fight_unit["最大气血"] += fight_unit["法术状态"][status_name]["最大气血"];
		fight_unit["伤害"] += fight_unit["法术状态"][status_name]["伤害"];
		fight_unit["防御"] += fight_unit["法术状态"][status_name]["防御"];
		fight_unit["速度"] += fight_unit["法术状态"][status_name]["速度"];
		fight_unit["法防"] += fight_unit["法术状态"][status_name]["法防"];
		fight_unit["法伤"] += fight_unit["法术状态"][status_name]["法伤"];
		fight_unit["躲避"] += fight_unit["法术状态"][status_name]["躲避"];
		fight_unit["命中"] += fight_unit["法术状态"][status_name]["命中"];
		fight_unit["物理伤害结果"] += fight_unit["法术状态"][status_name]["物理伤害结果"];
		fight_unit["法术伤害结果"] += fight_unit["法术状态"][status_name]["法术伤害结果"];
		fight_unit["抵抗封印等级"] += fight_unit["法术状态"][status_name]["抵抗封印等级"];
		fight_unit["封印命中等级"] += fight_unit["法术状态"][status_name]["封印命中等级"];
	}
}

/**
 * 取消状态 状态处理:取消状态(战斗数据, 名称, fight_unit)
 */
export function canel_unit_status(fight_data, status_name, fight_unit) {
	console.debug(`取消状态 ===> 编号: fight_unit ${fight_unit["编号"]} 状态: ${status_name}`)
	if (fight_unit["法术状态"][status_name] === undefined) {
		return;
	}

	clear_status_data(fight_unit, status_name);

	let skill_data = G.SkillData.default[status_name];

	//取消状态的额外算法
	if (skill_data && skill_data["取消状态"]) {
		skill_data["取消状态"](fight_data, fight_unit);
	}

	// 增益状态数量统计
	if (skill_data && fight_unit["增益"] && skill_data["技能类型"] === "增益") {
		fight_unit["增益"] -= 1;
		if (fight_unit["增益"] < 0) {
			fight_unit["增益"] = 0;
		}
	}

	// 置空指定状态
	fight_unit["法术状态"][status_name] = undefined;
	// 重置法术状态obj
	let new_status_obj = {};
	for (const key in fight_unit["法术状态"]) {
		let status = fight_unit["法术状态"][key];
		if (status) {
			new_status_obj[key] = status;
		}
	}
	fight_unit["法术状态"] = new_status_obj;
	// 添加取消状态流程
	canel_status_process(fight_data, fight_unit, status_name);
}

/**
 * 添加状态
 * @param {*} fight_data 战斗数据
 * @param {*} src_unit 发起单位
 * @param {*} target_unit 目标单位
 * @param {*} status_name 状态名称
 * @param {*} status_level 状态等级
 * @param {*} custom 指定的数据
 * @returns 
 */

export function add_unit_status(fight_data, src_unit, target_unit, status_name, status_level, custom) {
	console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]}`)
	if (status_name === undefined) {
		return;
	}

	if (status_level === undefined) {
		status_level = G.FightUnitUtils.get_unit_skill_level(src_unit, status_name);
	}

	let skill_data = G.SkillData.default[status_name];

	// 心如明镜 不继续添加状态
	if (target_unit["法术状态"]["心如明镜"]) {
		console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 心如明镜不继续添加状态`)
		return;
	}

	// 法术状态是否已经存在
	let exist = target_unit["法术状态"][status_name] !== undefined;
	console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 状态是否已存在 ${exist}`)

	// 如果定义了算法则使用算法计算属性
	if (skill_data && skill_data["状态算法"]) {
		console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 执行状态算法`)
		let res = skill_data["状态算法"](fight_data, src_unit, target_unit, status_level, custom);
		if (res === false) {
			return;
		}
		// 设置状态属性 补全属性默认值
		target_unit["法术状态"][status_name]["最大气血"] = target_unit["法术状态"][status_name]["最大气血"] || 0;
		target_unit["法术状态"][status_name]["伤害"] = target_unit["法术状态"][status_name]["伤害"] || 0;
		target_unit["法术状态"][status_name]["回合"] = target_unit["法术状态"][status_name]["回合"] || 1;
		target_unit["法术状态"][status_name]["防御"] = target_unit["法术状态"][status_name]["防御"] || 0;
		target_unit["法术状态"][status_name]["速度"] = target_unit["法术状态"][status_name]["速度"] || 0;
		target_unit["法术状态"][status_name]["法防"] = target_unit["法术状态"][status_name]["法防"] || 0;
		target_unit["法术状态"][status_name]["法伤"] = target_unit["法术状态"][status_name]["法伤"] || 0;
		target_unit["法术状态"][status_name]["躲避"] = target_unit["法术状态"][status_name]["躲避"] || 0;
		target_unit["法术状态"][status_name]["命中"] = target_unit["法术状态"][status_name]["命中"] || 0;
		target_unit["法术状态"][status_name]["物理伤害结果"] = target_unit["法术状态"][status_name]["物理伤害结果"] || 0;
		target_unit["法术状态"][status_name]["法术伤害结果"] = target_unit["法术状态"][status_name]["法术伤害结果"] || 0;
		target_unit["法术状态"][status_name]["抵抗封印等级"] = target_unit["法术状态"][status_name]["抵抗封印等级"] || 0;
		target_unit["法术状态"][status_name]["封印命中等级"] = target_unit["法术状态"][status_name]["封印命中等级"] || 0;
		target_unit["法术状态"][status_name]["层数"] = target_unit["法术状态"][status_name]["层数"];
		target_unit["法术状态"][status_name]["参数"] = target_unit["法术状态"][status_name]["参数"] || 1;
		target_unit["法术状态"][status_name]["境界"] = target_unit["法术状态"][status_name]["境界"] || 1;
		target_unit["法术状态"][status_name]["类型"] = skill_data["技能类型"];
	} else if (skill_data && skill_data["状态属性"]) {
		console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 状态属性算法`)
		// 使用状态属性算法补充
		let skill_status_data = skill_data["状态属性"](src_unit, target_unit, status_level, custom);
		// 设置状态属性 补全属性默认值
		if (target_unit["法术状态"][status_name] === undefined) {
			target_unit["法术状态"][status_name] = {};
		}
		target_unit["法术状态"][status_name]["最大气血"] = target_unit["法术状态"][status_name]["最大气血"] || 0;
		target_unit["法术状态"][status_name]["伤害"] = skill_status_data["伤害"] || 0;
		target_unit["法术状态"][status_name]["回合"] = skill_status_data["回合"] || 1;
		target_unit["法术状态"][status_name]["防御"] = skill_status_data["防御"] || 0;
		target_unit["法术状态"][status_name]["速度"] = skill_status_data["速度"] || 0;
		target_unit["法术状态"][status_name]["法防"] = skill_status_data["法防"] || 0;
		target_unit["法术状态"][status_name]["法伤"] = skill_status_data["法伤"] || 0;
		target_unit["法术状态"][status_name]["躲避"] = skill_status_data["躲避"] || 0;
		target_unit["法术状态"][status_name]["命中"] = skill_status_data["命中"] || 0;
		target_unit["法术状态"][status_name]["物理伤害结果"] = skill_status_data["物理伤害结果"] || 0;
		target_unit["法术状态"][status_name]["法术伤害结果"] = skill_status_data["法术伤害结果"] || 0;
		target_unit["法术状态"][status_name]["抵抗封印等级"] = skill_status_data["抵抗封印等级"] || 0;
		target_unit["法术状态"][status_name]["封印命中等级"] = skill_status_data["封印命中等级"] || 0;
		target_unit["法术状态"][status_name]["层数"] = skill_status_data["层数"];
		target_unit["法术状态"][status_name]["负面"] = skill_status_data["负面"];
		target_unit["法术状态"][status_name]["参数"] = skill_status_data["参数"] || 1;
		target_unit["法术状态"][status_name]["境界"] = skill_status_data["境界"] || 1;
		target_unit["法术状态"][status_name]["类型"] = skill_data["技能类型"];
	} else {
		console.warn(`状态 [${status_name}] 未在数据中定义状态属性和状态算法`);
	}

	// 叠加状态层数
	if (exist && target_unit["法术状态"][status_name]) {
		if (target_unit["法术状态"][status_name]["层数"]) {
			target_unit["法术状态"][status_name]["层数"] += 1;
			if (skill_data && skill_data["层数上限"] && target_unit["法术状态"][status_name]["层数"] > skill_data["层数上限"]) {
				target_unit["法术状态"][status_name]["层数"] = skill_data["层数上限"];
			}
		}
		if (skill_data && skill_data["刷新回合"]) {
			target_unit["法术状态"][status_name]["回合"] = skill_data["刷新回合"];
		}
		console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 叠加状态层数`)
		// 补充攻击编号
		console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 补充攻击编号、等级`)
		target_unit["法术状态"][status_name]["攻击编号"] = src_unit["编号"];
		target_unit["法术状态"][status_name]["等级"] = status_level;
		return;
	}

	// 超级赐福属性-五福
	if (status_name.startsWith("超级赐福")) {
		// 赐福级别
		let cf_level = G.Skill.super_skill_status_name.indexOf(status_name)
		if (cf_level !== -1) {
			target_unit["法术状态"][status_name]["伤害"] = cf_level * 10;
			target_unit["法术状态"][status_name]["防御"] = cf_level * 10;
			target_unit["法术状态"][status_name]["速度"] = cf_level * 10;
			target_unit["法术状态"][status_name]["法防"] = cf_level * 10;
			target_unit["法术状态"][status_name]["法伤"] = cf_level * 10;
			target_unit["法术状态"][status_name]["躲避"] = cf_level * 10;
			target_unit["法术状态"][status_name]["命中"] = cf_level * 10;
			target_unit["法术状态"][status_name]["物理伤害结果"] = cf_level * 10;
			target_unit["法术状态"][status_name]["法术伤害结果"] = cf_level * 10;
		}
	}

	// 防止没配置算法空
	if (target_unit["法术状态"][status_name] === undefined) {
		console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 未配置算法，补充默认`)
		target_unit["法术状态"][status_name] = {};
		target_unit["法术状态"][status_name]["回合"] = 1;
	}

	// 经脉减伤
	if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "吞雷")) {
		target_unit["法术状态"][status_name]["减伤"] = 0.05;
	}

	// 更新被施加单位的属性
	computing_status_data(target_unit, status_name);

	// 补充攻击编号
	console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 补充攻击编号、等级`)
	target_unit["法术状态"][status_name]["攻击编号"] = src_unit["编号"];
	target_unit["法术状态"][status_name]["等级"] = status_level;

	// 套装触发的状态持续回合处理 TODO 直接写到套装的技能算法里 而不是写在这里
	// if (tz) {
	// 	target_unit["法术状态"][status_name]["回合"] = 4;
	// 	if (status_level > src_unit["等级"]) {
	// 		target_unit["法术状态"][status_name]["回合"] = 8;
	// 	}
	// 	if (status_name === "楚楚可怜" || status_name === "修罗隐身") {
	// 		target_unit["法术状态"][status_name]["回合"] = 2;
	// 		if (status_level > src_unit["等级"]) {
	// 			target_unit["法术状态"][status_name]["回合"] = 5;
	// 		}
	// 	}
	// }

	// 增益类状态的处理
	if (skill_data && skill_data["技能类型"] === "增益") {
		console.debug(`添加状态 ===> ${status_name} 添加者 ${src_unit["编号"]}  被添加 ${target_unit["编号"]} 增益类法术状态处理`)
		// 永恒对增益状态的回合进行加成
		if (target_unit["永恒"]) {
			let zj = Math.floor(target_unit["法术状态"][status_name]["回合"] * target_unit["永恒"]);
			if (target_unit["永恒"] < 2 && zj > 3) {
				zj = 3;
			} else if (target_unit["永恒"] === 2 && zj > 6) {
				zj = 6;
			}
			target_unit["法术状态"][status_name]["回合"] += zj;
		}

		// 增益状态数量统计
		if (target_unit["增益"] === undefined) {
			target_unit["增益"] = 0;
		}
		target_unit["增益"] += 1;
	}
	// 添加战斗流程
	add_status_process(fight_data, target_unit, status_name);
	console.debug(target_unit["法术状态"][status_name])
}


/**
 * 解除状态结果(单位,名称,类型,指定)
 * @param {*} fight_data 
 * @param {*} fight_unit 
 * @param {*} status_name_list 所有状态
 * @param {*} custom 是否指定
 * @returns 
 */
export function relieve_status(fight_data, fight_unit, status_name_list, custom) {
	let relieve_names = [];
	for (let index = 0; index < status_name_list.length; index++) {
		let status_name = status_name_list[index];
		if (fight_unit["法术状态"][status_name]) {
			let is_relieve = true;
			if (fight_unit["法术状态"][status_name]["驱散抵抗"] && G.RandomUtils.chance(fight_unit["法术状态"][status_name]["驱散抵抗"])) {
				is_relieve = false;
			}
			if (fight_unit["法术状态"][status_name]["驱散抵抗"] && G.RandomUtils.chance(fight_unit["法术状态"][status_name]["驱散抵抗"])) {
				is_relieve = false;
			}
			if (custom) {
				if (status_name === "魔音摄魂" || status_name === "瘴气") {
					if (fight_unit["法术状态"][status_name]["绝殇"] && fight_unit["法术状态"][status_name]["绝殇"] === fight_data["回合"]) {
						is_relieve = false
					}
				} else if (status_name === "天罗地网" && fight_unit["法术状态"][status_name].附骨 && G.RandomUtils.chance(30)) {
					is_relieve = false
				}
			}
			let target_number = fight_unit["法术状态"][status_name]["攻击编号"];
			let target_unit = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);

			// 解除状态并对目标进行操作
			if (is_relieve) {
				// TODO  解除状态算法需要提取
				if (status_name === "毒" && fight_unit["法术状态"][status_name]["毒引"]) {
					let sh = 600;
					if (fight_unit["气血"] <= 600) {
						sh = fight_unit["气血"] - 1;
					}
					G.FightComputingUtils.remove_hp_and_no_play(fight_data, fight_unit, target_unit, "", sh);
				} else if (status_name === "尸腐毒" && fight_unit["法术状态"][status_name]["入骨"]) {
					let sh = Math.floor(fight_unit["气血"] * fight_unit["法术状态"][status_name]["入骨"])
					G.FightComputingUtils.remove_hp_and_no_play(fight_data, fight_unit, target_unit, "", sh);
				} else if (status_name === "普渡众生" && fight_unit["法术状态"][status_name]["雨润"]) {
					let heals = Math.floor((fight_unit["法术状态"][status_name]["等级"] * 2 + 50) * fight_unit["法术状态"][status_name]["回合"]);
					heals = Math.floor(G.FightComputingUtils.computing_heals(fight_data, target_unit, fight_unit, "自在心法", heals) * 0.8);
					G.FightComputingUtils.add_target_hp_and_play(fight_data, target_unit, heals);
				} else if (status_name === "蜜润" && fight_unit["法术状态"][status_name].滋养) {
					let hp = G.FightUnitUtils.get_unit_skill_level(target_unit, "驭灵咒") * fight_unit["法术状态"][status_name]["回合"];
					G.FightComputingUtils.add_target_hp_and_play(fight_data, target_unit, hp);
				} else if ((status_name === "明光宝烛" || status_name === "金身舍利") && fight_unit["法术状态"][status_name]["救人"]) {
					G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, fight_unit, fight_unit["等级"] * fight_unit["法术状态"][status_name]["回合"]);
				}
				canel_unit_status(fight_data, status_name, fight_unit);
			}
			relieve_names.push(status_name);
		}
	}
	return relieve_names;
}

/**
 * 添加法术状态流程
 * @param {*} fight_data 
 * @param {*} fight_unit 
 * @param {*} status_name 
 */
function add_status_process(fight_data, fight_unit, status_name) {
	console.debug(`添加法术状态流程 ===> ${status_name} 被添加 ${fight_unit["编号"]}`)
	if (fight_data["战斗流程"].length === 0) {
		fight_data["战斗流程"].push({ "流程": 6 });
	}
	if (fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["状态处理添加"] === undefined) {
		fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["状态处理添加"] = [];
	}
	fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["状态处理添加"].push({
		"编号": fight_unit["编号"], "名称": status_name,
		"回合": fight_unit["法术状态"][status_name]["回合"],
		"颜色": fight_unit["法术状态"][status_name]["颜色"],
		"层数": fight_unit["法术状态"][status_name]["层数"],
		"负面状态": fight_unit["法术状态"][status_name]["负面"],
		"数据": fight_unit["法术状态"][status_name]
	});
	G.FightUtils.add_waiting_play_time(fight_data, 1, "添加法术状态");
}

/**
 * 取消法术状态流程
 * @param {*} fight_data 
 * @param {*} fight_unit 
 * @param {*} status_name 
 */
function canel_status_process(fight_data, fight_unit, status_name) {
	// 添加取消状态流程
	if (fight_data["战斗流程"].length === 0) {
		fight_data["战斗流程"].push({ "流程": 6, "状态处理取消": [{ "编号": fight_unit["编号"], "名称": status_name }] });
	} else {
		if (fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["状态处理取消"] === undefined) {
			fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["状态处理取消"] = [];
		}
		fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["状态处理取消"].push({ "编号": fight_unit["编号"], "名称": status_name });
	}
}

/**
 * 同步法术状态
 * @param {*} fight_data 
 * @param {*} fight_unit 
 */
export function sync_unit_status(fight_data, fight_unit) {
	// 回合过期的法术状态应当及时取消,状态剩余回合应当及时同步
	console.debug(`法术状态过期处理 =======> ${JSON.stringify(fight_unit["法术状态"])}`);
	for (const key in fight_unit["法术状态"]) {
		let status = fight_unit["法术状态"][key];
		if (status && status["回合"]) {
			status["回合"] -= 1;
			if (status["回合"] < 1) {
				//移除法术状态
				G.FightStatusUtils.canel_unit_status(fight_data, key, fight_unit);
			} else {
				//同步法术状态
				add_status_process(fight_data, fight_unit, key);
			}
		}
	}
}